<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateUserFilesTable extends Migration
{
    public function up()
    {
        Schema::create('user_files', function (Blueprint $table) {
            // 关联用户与文件的外键
            $table->unsignedBigInteger('user_id');
            $table->unsignedBigInteger('file_id');
            
            // 区分文件用途（如头像/附件）
            $table->string('usage_type')->comment('用途：avatar=头像，attachment=附件');
            
            // 时间戳（记录关联创建时间）
            $table->timestamps();
            
            // 联合主键：确保「用户-文件-用途」组合唯一
            $table->primary(['user_id', 'file_id', 'usage_type']);
            
            // 外键约束（删除用户/文件时，级联删除关联记录）
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
            $table->foreign('file_id')->references('id')->on('files')->onDelete('cascade');
        });
    }

    public function down()
    {
        Schema::dropIfExists('user_files');
    }
}